home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Network Supervisor's Toolkit
/
Network Supervisor's Toolkit.iso
/
tools
/
tpnova
/
ipxhdr.doc
next >
Wrap
Text File
|
1996-07-10
|
7KB
|
197 lines
unit IPXLib;
interface
uses DOS;
const
UNKNOWN_PACKET_TYPE = 0;
ROUTING_INFORMATION_PACKET = 1;
ECHO_PACKET = 2;
ERROR_PACKET = 3;
PACKET_EXCHANGE_PACKET = 4;
SEQUENCED_PACKET_PROTOCOL_PACKET = 5;
ANY_SERVER = $FFFF;
type
ServerID = array[1..48] of char;
NetworkAddress = array[1..4] of byte;
NodeAddress = array[1..6] of byte;
SocketAddress = word;
InternetworkAddress = RECORD
NetworkNumber : NetworkAddress;
PhysicalNodeNumber : NodeAddress;
SocketNumber : SocketAddress;
end;
IPXHeaderType = RECORD
CheckSum : word;
Length : word;
TransportControl : byte;
PacketType : byte;
Destination : InternetworkAddress;
Source : InternetworkAddress;
end;
IPXPacketType = RECORD
Header : IPXHeaderType;
end;
SPXPacketType = RECORD
Header : IPXHeaderType;
ConnectionControl : byte;
DataStreamType : byte;
SourceConnectionID : word;
DestinationConnectionID : word;
SequenceNumber : word;
AcknowledgeNumber : word;
AllocationNumber : word;
end;
ConnectionStatusBlock = RECORD
ConnectionState : byte;
ConnectionFlags : byte;
SourceConnectionID : word;
DestinationConnectionID : word;
SequenceNumber : word;
AcknowledgeNumber : word;
AllocationNumber : word;
RemoteAcknowledgeNumber : word;
RemoteAllocationNumber : word;
ConnectionSocket : word;
ImmeadiateAddress : word;
Destination : InternetworkAddress;
RetransmissionCount : word;
EstimatedRoundtripDelay : word;
RetransmittedPackets : word;
SuppressedPackets : word;
end;
SAPFunctionType = RECORD
case integer of
1 : (ResponseType : word);
2 : (QueryType : word);
3 : (AutoBroadcastType : word);
4 : (ServerShutdownAdType : word);
end;
SAPPacketType = RECORD
Header : IPXHeaderType;
FunctionCode : SAPFunctionType;
ServerType : word;
ServerName : ServerID;
ResidentNetwork : InternetworkAddress;
IntermediateNetworks : word;
end;
ServerIDInfo = RECORD
ServerType : word;
ServerName : ServerID;
ResidentNetwork : InternetworkAddress;
IntermediateNetworks : word;
end;
GSQPacketType = RECORD
Header : IPXHeaderType;
FunctionCode : SAPFunctionType;
ServerInfo : array[1..8] of ServerIDInfo
end;
PacketDescriptorType = RECORD
case integer of
1 : (IPXAddress : ^IPXPacketType;
IPXSize : integer);
2 : (SPXAddress : ^SPXPacketType;
SPXSize : integer);
3 : (SAPAddress : ^SAPPacketType;
SAPSize : integer);
4 : (GSQAddress : ^GSQPacketType;
GSQSize : integer);
end;
DescriptorType = RECORD
Address : pointer;
Size : integer;
end;
AESECB = RECORD
Link : pointer;
ESRAddress : pointer;
InUse : boolean;
AESWorkSpace : array[1..5] of byte;
end;
WorkSpaceArray = array[1..12] of byte;
IPXECB = RECORD
Link : pointer;
ESRAddress : pointer;
InUse : boolean;
CompletionCode : byte;
SocketNumber : word;
IPXWorkSpace : longint;
DriverWorkSpace : WorkSpaceArray;
ImmediateAddress : NodeAddress;
FragmentCount : integer;
PacketDescriptor : PacketDescriptorType;
FragmentDescriptor : DescriptorType;
PascalESRAddress : pointer;
UserDataAddress : pointer;
end;
var
IPXResult : integer;
var
SPXInstalled : boolean;
var
SPXResult : integer;
var
SAPResult : integer;
SAPSocket : word;
SAPadECB : ^IPXECB;
SAPadPacket : ^SAPPacketType;
SAPWaitAddress,
SAPAdvertiseAddress : pointer;
var
Regs : Registers;
(* IPX *********************************************************************)
procedure SetDataSegment;
procedure PrepareIPXInterface;
procedure OpenSocket(var SocketNumber : word);
procedure CloseSocket(SocketNumber : word);
procedure GetLocalTarget(var InterNetAddress; var LocalTargetAddress; var TransportTime : integer);
procedure SendPacket(var AnECB);
procedure ListenForPacket(var AnECB);
procedure ScheduleIPXEvent(Delay : integer; var AnECB);
procedure CancelEvent(var AnECB);
procedure ScheduleSPecialEvent(Delay : integer; var AnECB);
procedure GetIntervalMarker(var IntervalMarker : word);
procedure GetInterNetworkAddress(var LocalNetworkAddress);
procedure RelinquishControl;
procedure DisconnectFromTarget(var ATargetAddress);
(* SPX *********************************************************************)
procedure CheckSPXInstallation;
procedure EstablishConnection(RetryCount : byte; MonitorConnection : boolean;
var AnECB; var ConnectionID : word);
procedure ListenForConnection(RetryCount : byte; MonitorConnection : boolean;
var AnECB);
procedure TerminateConnection(ConnectionNumber : word; var AnECB);
procedure AbortConnection(ConnectionNumber : word);
procedure GetConnectionStatus(ConnectionNumber : word; var AnECB; var Exists : boolean);
procedure SendSequencedPacket(ConnectionNumber : word; var AnECB);
procedure ListenForSequencedPacket(var AnECB);
procedure ESRPortal;
function ReverseWord(BackwardsWord : word) : word;
(***************************************************************************)